Overview
Community events use the same program registration cart as traditional programs, but ticket selection replaces the “choose instances” step. The basic process is:
- Create a cart
- Start community event registration (add the event to the cart for a member)
- Get possible event tickets to register for
- Add tickets to the cart (one ticket per API call)
- Remove a ticket from the cart (optional; one ticket per API call)
- Accept agreements (when required)
- Review the cart
- Check out (when payment is required): without payment, Daxko Operations payment page, new payment method, or existing payment method
- Get the receipt
- Get the event roster to view registrations that have occurred
Concepts
- A cart is a temporary storage mechanism for purchasing multiple things and checking out once.
- A product bundle represents one registration being built up before checkout. Each community event registration for a member is one product bundle.
- Community events are identified with an
EVTprefix plus the numeric event id (for exampleEVT124), matching program search and offering APIs. - Event tickets replace program instances. Use
event_ticketsendpoints on the product bundle instead ofinstances.
NOTE: This tutorial uses the same Create a Cart call as program registration. It cannot be used for membership join.
Full Example
Step 1: Find a community event and member
Use the Programs & Events API calls to find a community event. Filter program search with program_type = community_event, or use Get community event offering details when you already have an event_id.
Use the Units API call to find the member_id to register.
You need:
event_id(for exampleEVT124)member_id(for example10000-01)
Step 2: Create a cart
Use the Create a Cart API call to create a new cart.
NOTE: Call this once per checkout session, even if you register for multiple events or members.
Request:
POST /v3/carts
Response:
{
"cart_id": "d9e6ddd1-6d99-4623-b44c-cdd9450ed5bc"
}
Use the cart_id from the response on all subsequent calls.
Step 3: Start community event registration
Use the Start community event registration API call to add the event to the cart for a member.
Request:
POST /v3/carts/d9e6ddd1-6d99-4623-b44c-cdd9450ed5bc/community_events
{
"event_id": "EVT124",
"member_id": "10000-01",
"dry_run": false
}
Response:
{
"success": true,
"product_bundle_id": "26d2fe9a-c6d8-437b-83fb-cbe0063de31b",
"info": {
"steps": {
"required": [
"agreements",
"review"
]
},
"products": [
{
"id": "Event ID: 124",
"name": "Community 5K",
"children": []
}
],
"person": {
"full_name": "Johnny Doe"
}
},
"links": [
{
"rel": "event_tickets",
"href": "/v3/carts/d9e6ddd1-6d99-4623-b44c-cdd9450ed5bc/product_bundles/26d2fe9a-c6d8-437b-83fb-cbe0063de31b/event_tickets"
},
{
"rel": "agreements",
"href": "/v3/carts/d9e6ddd1-6d99-4623-b44c-cdd9450ed5bc/product_bundles/26d2fe9a-c6d8-437b-83fb-cbe0063de31b/agreements"
},
{
"rel": "review",
"href": "/v3/carts/d9e6ddd1-6d99-4623-b44c-cdd9450ed5bc"
}
]
}
- Save
product_bundle_idfor ticket, agreement, and other product-bundle calls. - Use
info.steps.requiredandlinksto determine the next step. Community events exposeevent_ticketsinstead ofinstances.
Set dry_run to true to validate without adding to the cart.
Step 4: Get possible event tickets
Use the Get possible community event tickets to select API call to list ticket types, pricing, availability, and current selections.
Request:
GET /v3/carts/d9e6ddd1-6d99-4623-b44c-cdd9450ed5bc/product_bundles/26d2fe9a-c6d8-437b-83fb-cbe0063de31b/event_tickets
Response:
{
"info": {
"steps": {
"required": [
"agreements",
"review"
]
},
"products": [
{
"id": "Event ID: 124",
"name": "Community 5K",
"children": []
}
],
"person": {
"full_name": "Johnny Doe"
}
},
"event_registration": {
"capacity_reached": false,
"tickets": [
{
"ticket_id": "ET1001",
"name": "Adult",
"description": "Ages 18+",
"price": 25,
"has_count": true,
"count": 100,
"selected": 0,
"spots_available": "100",
"total": 0,
"sold_out": false
},
{
"ticket_id": "ET1002",
"name": "Child",
"description": "Ages 12 and under",
"price": 10,
"has_count": false,
"selected": 0,
"spots_available": "unlimited",
"total": 0,
"sold_out": false
}
],
"ticket_summary": {
"selected_tickets": [],
"sub_total": 0
},
"selections": {
"ET1001": 0,
"ET1002": 0
},
"has_selections": false,
"max_ticket_selection_reached": false,
"unit_event_ticket_capacity_reached": false,
"location_capacity_reached": false
}
}
Use ticket_id values from the tickets collection when adding or removing tickets. Ticket ids use an ET prefix plus the fee structure id.
Step 5: Add tickets to the cart
Use the Add community event ticket to the cart API call to add one ticket at a time. Each call increments the quantity for that ticket type by one. Call again to add another ticket of the same type.
Request:
PUT /v3/carts/d9e6ddd1-6d99-4623-b44c-cdd9450ed5bc/product_bundles/26d2fe9a-c6d8-437b-83fb-cbe0063de31b/event_tickets
{
"ticket_id": "ET1001"
}
Response:
{
"success": true,
"info": {
"steps": {
"required": [
"agreements",
"review"
]
}
},
"event_registration": {
"capacity_reached": false,
"tickets": [
{
"ticket_id": "ET1001",
"name": "Adult",
"description": "Ages 18+",
"price": 25,
"has_count": true,
"count": 100,
"selected": 1,
"spots_available": "99",
"total": 25,
"sold_out": false
}
],
"ticket_summary": {
"selected_tickets": [
{
"ticket_id": "ET1001",
"name": "Adult",
"price": 25,
"selected": 1,
"total": 25,
"sold_out": false
}
],
"sub_total": 25
},
"selections": {
"ET1001": 1
},
"has_selections": true
},
"links": [
{
"rel": "agreements",
"href": "/v3/carts/d9e6ddd1-6d99-4623-b44c-cdd9450ed5bc/product_bundles/26d2fe9a-c6d8-437b-83fb-cbe0063de31b/agreements"
},
{
"rel": "review",
"href": "/v3/carts/d9e6ddd1-6d99-4623-b44c-cdd9450ed5bc"
}
]
}
When capacity is reached or a ticket is sold out, the API still returns HTTP 200 with success: false and an updated event_registration. links is omitted when success is false.
Step 6: Remove a ticket from the cart
Use the Remove community event ticket from the cart API call to remove one ticket at a time. Each call decrements the quantity for that ticket type by one.
Request:
DELETE /v3/carts/d9e6ddd1-6d99-4623-b44c-cdd9450ed5bc/product_bundles/26d2fe9a-c6d8-437b-83fb-cbe0063de31b/event_tickets
{
"ticket_id": "ET1001"
}
Response:
{
"success": true,
"info": {
"steps": {
"required": [
"agreements",
"review"
]
}
},
"event_registration": {
"selections": {
"ET1001": 0
},
"has_selections": false,
"ticket_summary": {
"selected_tickets": [],
"sub_total": 0
}
},
"links": [
{
"rel": "event_tickets",
"href": "/v3/carts/d9e6ddd1-6d99-4623-b44c-cdd9450ed5bc/product_bundles/26d2fe9a-c6d8-437b-83fb-cbe0063de31b/event_tickets"
}
]
}
Skip this step if you do not need to change ticket selections.
Step 7: Agreements
This step is required only when info.steps.required contains agreements.
First, use the Get Agreements API call.
Request:
GET /v3/carts/d9e6ddd1-6d99-4623-b44c-cdd9450ed5bc/product_bundles/26d2fe9a-c6d8-437b-83fb-cbe0063de31b/agreements
Response:
{
"signature_type": "type_name",
"agreements": [
{
"agreement_id": "W293",
"title": "Event waiver",
"body": "I agree to the event terms and conditions.",
"accepted": false
}
]
}
Next, mark agreements as accepted:
Request:
PUT /v3/carts/d9e6ddd1-6d99-4623-b44c-cdd9450ed5bc/product_bundles/26d2fe9a-c6d8-437b-83fb-cbe0063de31b/agreements
{
"agreement_ids": ["W293"],
"signee_name": "John Doe"
}
Step 8: Review
Use the Get Cart Details API call to review line items, amounts, and payment requirements before checkout.
Request:
GET /v3/carts/d9e6ddd1-6d99-4623-b44c-cdd9450ed5bc
Response:
{
"version": "AAAAAAmit1o=",
"line_items": [
{
"line_item_id": "aaaaaaaa-0b27-48c7-b682-48e5206e0be3",
"product_bundle_id": "26d2fe9a-c6d8-437b-83fb-cbe0063de31b",
"type": "event_ticket",
"description": "Community 5K - Adult",
"level1": "Johnny Doe",
"level2": "Community 5K",
"unit_price": 25,
"quantity": 1,
"extended_price": 25,
"can_remove": true,
"min_payment_amount": 25,
"payment_method_amount": 25
}
],
"line_item_payments": [
{
"line_item_id": "aaaaaaaa-0b27-48c7-b682-48e5206e0be3",
"amount": 25,
"schedule_remaining": true
}
],
"require_payment_method": true,
"max_payment_method_amount": 25
}
Save the version value for checkout. Community event line items use type event_ticket.
Step 9a: Checkout (without payment)
In order to checkout without payment, the payment_method_amount must be 0, and each amount in the line_item_payments collection must be 0. The version value must be the same as the last value from the Get Cart Details API call.
Request:
POST /v3/carts/d9e6ddd1-6d99-4623-b44c-cdd9450ed5bc/checkout
{
"version": "AAAAAAmit1o=",
"customer": {
"name": "John Doe",
"email": "[email protected]"
},
"payment_info": [
{
"payment_method_amount": 0.0,
"line_item_payments": [
{
"line_item_id": "aaaaaaaa-0b27-48c7-b682-48e5206e0be3",
"amount": 0,
"schedule_remaining": false
}
]
}
]
}
Response:
{
"success": true,
"links": [
{
"rel": "receipt",
"href": "/v3/carts/d9e6ddd1-6d99-4623-b44c-cdd9450ed5bc/receipt"
},
{
"rel": "status",
"href": "/v3/carts/d9e6ddd1-6d99-4623-b44c-cdd9450ed5bc/status"
}
]
}
Step 9b: Checkout (with Daxko Operations payment page)
This is the preferred method to capture payment information and check out.
Use the Program Registration One-time Link to generate a one-time link (that expires in 10 minutes) that you will redirect your user to Daxko Operations Online in order to capture payment information and complete the checkout process.
Request:
POST /v3/carts/d9e6ddd1-6d99-4623-b44c-cdd9450ed5bc/one_time_link
{
"redirect_uri": "https://example.org/my_success_landing_page",
"step": "pay",
"header": "show",
"nav": "hide",
"footer": "hide",
"customer_name": "John Doe",
"customer_email": "[email protected]"
}
Response:
{
"url": "https://operations.daxko.com/online/2014/cart/redirector.mvc?code=_qNGKCKowkSmHDzCY6y8zT4bxCCD2LZgQN8m4ko_6E0&__header=show&__footer=hide&__nav=hide"
}
Step 9c: Checkout (with new payment method)
In order to pay with a new payment method, it must be tokenized using our payment tokens JavaScript library. First, see the Payment Tokenization tutorial on how to generate a payment token. The output will be a value that looks like PT3raaMpFPXEsmVexb5JOF3Zpff2TmtENJ_yZkLTudSrY and will be used in the checkout call.
Request:
POST /v3/carts/d9e6ddd1-6d99-4623-b44c-cdd9450ed5bc/checkout
{
"version": "AAAAAAmit1o=",
"customer": {
"name": "John Doe",
"email": "[email protected]"
},
"payment_info": [
{
"payment_method_amount": 25,
"billing_method": {
"id": "PT3raaMpFPXEsmVexb5JOF3Zpff2TmtENJ_yZkLTudSrY",
"save": true
},
"line_item_payments": [
{
"line_item_id": "aaaaaaaa-0b27-48c7-b682-48e5206e0be3",
"amount": 25,
"schedule_remaining": false
}
]
}
]
}
Declined Response:
{
"success": false,
"errors": [
{
"message": "Declined"
}
]
}
Successful Response:
{
"success": true,
"links": [
{
"rel": "receipt",
"href": "/v3/carts/d9e6ddd1-6d99-4623-b44c-cdd9450ed5bc/receipt"
},
{
"rel": "status",
"href": "/v3/carts/d9e6ddd1-6d99-4623-b44c-cdd9450ed5bc/status"
}
]
}
Step 9d: Checkout (with existing payment method)
In order to pay with a payment method that exists on the unit’s account: first, use the Get Unit Billing Methods API call:
Request:
GET /v3/units/10000/billing_methods
Response:
{
"billing_methods": [
{
"id": "BM1955320",
"method": "bank_account",
"name": "EFT",
"account_number_last_4_digits": "1111",
"display_name": "Bank Account (ending in 1111)",
"expired": false
}
{
"id": "BM1965321",
"method": "credit_card",
"name": "MasterCard",
"account_number_last_4_digits": "5100",
"display_name": "MasterCard (ending in 5100, expires 1/2022)",
"expired": false
}
]
}
Now use the id from the previous response in the checkout API call.
Request:
POST /v3/carts/d9e6ddd1-6d99-4623-b44c-cdd9450ed5bc/checkout
{
"version": "AAAAAAmit1o=",
"customer": {
"name": "John Doe",
"email": "[email protected]"
},
"payment_info": [
{
"payment_method_amount": 25,
"billing_method": {
"id": "BM1965321"
},
"line_item_payments": [
{
"line_item_id": "aaaaaaaa-0b27-48c7-b682-48e5206e0be3",
"amount": 25,
"schedule_remaining": false
}
]
}
]
}
Declined Response:
{
"success": false,
"errors": [
{
"message": "Declined"
}
]
}
Successful Response:
{
"success": true,
"links": [
{
"rel": "receipt",
"href": "/v3/carts/d9e6ddd1-6d99-4623-b44c-cdd9450ed5bc/receipt"
},
{
"rel": "status",
"href": "/v3/carts/d9e6ddd1-6d99-4623-b44c-cdd9450ed5bc/status"
}
]
}
Step 10: Receipt
The receipt is available immediately after checkout, but the registration is written to Daxko Operations asynchronously. Check progress with the Get Cart Status API call.
Use the Get Cart Receipt API call.
Request:
GET /v3/carts/d9e6ddd1-6d99-4623-b44c-cdd9450ed5bc/receipt
Response:
{
"order_date": "2017-10-12T21:06:58.6460000Z",
"payments": [],
"line_items": [
{
"line_item_id": "aaaaaaaa-0b27-48c7-b682-48e5206e0be3",
"product_bundle_id": "26d2fe9a-c6d8-437b-83fb-cbe0063de31b",
"type": "event_ticket",
"description": "Community 5K - Adult",
"level1": "Johnny Doe",
"level2": "Community 5K",
"unit_price": 25,
"quantity": 1,
"extended_price": 25,
"payment_method_amount": 25
}
],
"customer": {
"purchased_by": "John Doe",
"email": "[email protected]",
"name": "Doe, John"
},
"vendor": {
"name": "My Branch"
}
}
Step 11: Get event roster
After checkout completes and the cart has been processed, use the Get community event roster API call to list registrations for the event. Results are grouped by order number (one row per checkout), with optional filters and paging.
Use the same event_id as registration (EVT124 or the numeric Operations event_id). Wait until Get Cart Status shows the registration has been written before expecting new rows on the roster.
Request (all registrants, first page):
GET /v3/events/EVT124/offerings/roster?page_number=0&page_size=25
Request (registrations for one member):
GET /v3/events/EVT124/offerings/roster?member_id=10000-01
Optional query parameters:
| Parameter | Description |
|---|---|
member_id |
Limit roster to a single member |
registered_after |
Only registrations created after this date-time (ISO 8601) |
page_number |
Zero-based page index; defaults to 0 |
page_size |
Rows per page; defaults to 25 |
include_cancelled |
When true, includes fully cancelled orders |
Response:
{
"event_id": 124,
"event_name": "Community 5K",
"event_start_end_datetime": "Sat, Jul 4, 2026 9:00 AM - 11:00 AM",
"location_name": "Main Branch",
"address": "555 My Branch Dr, Homewood, AL 35209",
"capacity": "100 attendees",
"event_total_paid": 250,
"event_total_unpaid": 25,
"page_total_tickets_sold": 2,
"page_total_seats_purchased": 2,
"event_total_tickets_sold": 15,
"event_total_seats_purchased": 15,
"total_registrants": 2,
"has_more_records": false,
"registration_dates": [
{
"registration_group": "",
"inhouse_registration_from_to_datetime": "Jan 1, 2026 - Jul 3, 2026",
"online_registration_from_to_datetime": "Jan 1, 2026 - Jul 3, 2026"
}
],
"registrants": [
{
"name": "Johnny Doe",
"member_id": "10000-01",
"member_unit_id": "10000",
"unit_status": "Active",
"ticket_count": 1,
"date_created": "2026-05-20T14:30:00",
"order_number": 9001234,
"email": "[email protected]",
"phone": "(555) 555-0100",
"tickets_list_text": "1 x Adult",
"seats_purchased": 1,
"has_balance_due": false,
"cancelled": false
},
{
"name": "Jane Doe",
"member_id": "10000-02",
"member_unit_id": "10000",
"unit_status": "Active",
"ticket_count": 1,
"date_created": "2026-05-19T10:15:00",
"order_number": 9001200,
"email": "[email protected]",
"phone": "",
"tickets_list_text": "1 x Child",
"seats_purchased": 1,
"has_balance_due": true,
"cancelled": false
}
]
}
event_total_*fields summarize the whole event (not limited by the current page).page_total_*fields summarize only theregistrantsrows in this response.- Use
has_more_recordsand incrementpage_numberto fetch additional pages.